home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C/C++ Users Group Library 1996 July
/
C-C++ Users Group Library July 1996.iso
/
listings
/
v_01_07
/
1n07059a
< prev
next >
Wrap
Text File
|
1990-10-12
|
6KB
|
190 lines
/**********************************************************
* SAMPLE.C
* Profile Functions Demonstration
* (c) Stuart Browning,1990
*/
#define LINT_ARGS
#define NOMINMAX
#include <stdlib.h>
#include <stdio.h>
#include <windows.h>
#include "sample.h"
HANDLE hInst;
long FAR PASCAL MainWindowProc(HWND,unsigned,WORD,LONG);
BOOL FAR PASCAL About(HWND,unsigned,WORD,LONG);
short xScreen,yScreen;
int xPos,yPos,xSize,ySize;
/***********************************************************
* WinMain()
*/
int PASCAL WinMain(hInstance,hPrevInstance,lpCmdLine,nCmdShow)
HANDLE hInstance;
HANDLE hPrevInstance;
LPSTR lpCmdLine;
int nCmdShow;
{
WNDCLASS WndClass;
HWND hWnd;
MSG msg;
hInst=hInstance;
/*
* Register Main Window Class
*/
if (!hPrevInstance){
WNDCLASS WndClass;
WndClass.lpszClassName = (LPSTR)"MainWindow";
WndClass.hInstance = hInstance;
WndClass.lpfnWndProc = MainWindowProc;
WndClass.style = CS_HREDRAW|CS_VREDRAW;
WndClass.hbrBackground = GetStockObject(LTGRAY_BRUSH);
WndClass.hIcon = NULL;
WndClass.lpszMenuName = (LPSTR)"MainMenu";
WndClass.hCursor = LoadCursor(NULL,IDC_ARROW);
WndClass.cbClsExtra = NULL;
WndClass.cbWndExtra = NULL;
if (!RegisterClass(&WndClass))
return(NULL);
}
/*
* Get System Metrics information
*/
xScreen = GetSystemMetrics(SM_CXSCREEN);
yScreen = GetSystemMetrics(SM_CYSCREEN);
/*
* Get main form window position from WIN.INI
*/
xPos=GetProfileInt("SAMPLE","xPos",3);
yPos=GetProfileInt("SAMPLE","yPos",3);
xSize=GetProfileInt("SAMPLE","xSize",CW_USEDEFAULT);
ySize=GetProfileInt("SAMPLE","ySize",0);
/*
* Check for crazy settings in WIN.INI
*/
if (xSize<(xScreen/5))
xSize=CW_USEDEFAULT;
if (ySize<(yScreen/5))
ySize=CW_USEDEFAULT;
/*
* Create Main Window
*/
hWnd=CreateWindow("MainWindow",
"Profile Functions Demonstration",
WS_OVERLAPPEDWINDOW,
xPos,
yPos,
xSize,
ySize,
NULL,
NULL,
hInstance,
NULL);
if (!hWnd)
return(NULL);
/*
* Message Loop
*/
while (GetMessage(&msg,NULL,0,0)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (msg.wParam);
}
/**********************************************************
* MainWindowProc()
*/
long FAR PASCAL MainWindowProc(hWnd,message,wParam,lParam)
HWND hWnd;
unsigned message;
WORD wParam;
LONG lParam;
{
switch (message){
case WM_CREATE:
ShowWindow(hWnd,SW_SHOWNORMAL);
UpdateWindow(hWnd);
break;
case WM_COMMAND:
switch(wParam){
case IDM_ABOUT:
{
FARPROC lpfn;
lpfn=MakeProcInstance(About,hInst);
DialogBox(hInst,"ABOUT",hWnd,lpfn);
FreeProcInstance(lpfn);
}
break;
case IDM_EXIT:
SendMessage(hWnd,WM_CLOSE,0,0L);
break;
default:break;
}
break;
case WM_ENDSESSION:
case WM_CLOSE:
SetCursor(LoadCursor(NULL,IDC_WAIT));
/*
* Save Window Position & Size
*/
if(!IsIconic(hWnd)){
char buf[10];
RECT Rect;
GetWindowRect(hWnd,&Rect);
itoa(Rect.left,buf,10);
WriteProfileString("SAMPLE","xPos",buf);
itoa(Rect.top,buf,10);
WriteProfileString("SAMPLE","yPos",buf);
xSize=Rect.right-Rect.left;
itoa(xSize,buf,10);
WriteProfileString("SAMPLE","xSize",buf);
ySize=Rect.bottom-Rect.top;
itoa(ySize,buf,10);
WriteProfileString("SAMPLE","ySize",buf);
}
DestroyWindow(hWnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:return(DefWindowProc(hWnd,
message,
wParam,
lParam));
}
return(NULL);
}
/**********************************************************
* About()
*/
BOOL FAR PASCAL About(hDlg,message,wParam,lParam)
HWND hDlg;
unsigned message;
WORD wParam;
LONG lParam;
{
switch (message){
case WM_CLOSE:
SendMessage(hDlg,WM_COMMAND,ID_OK,0L);
break;
case WM_COMMAND:
switch(wParam){
case ID_OK:
EndDialog(hDlg,TRUE);
break;
default:return(FALSE);
}
break;
default:return(FALSE);
}
return(TRUE);
}